package com.itheima.aop;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;

public class AOPAdvice {

    //第一种传入参数的方式
    public void before(JoinPoint jp){
        //通过JoinPoint参数获取调用原始方法所携带的参数
        Object[] args = jp.getArgs();
//        System.out.println("before00运行"+args[0]);
    }
        //第二种传入参数的方式
    //在spring配置文件中的传入参数的字母必须相同
    public void before1(int x,int y ){
        System.out.println("before运行"+x+y);
    }


    public void after(JoinPoint jp){
        System.out.println("after运行");
    }


    //直接传入
    public void afterReturning(Object object){
        System.out.println("afterReturning运行"+object);
    }
    //执行后异常执行  传入参数  无法接收返回值  与配置文件的字母相同
    public void afterThrowing(Throwable t){
        System.out.println("afterThrowing运行"+t.getMessage());

    }

    //环绕执行
    public Object afterAround(ProceedingJoinPoint pjp) throws Throwable {
        System.out.println("afterAround-before运行");
        //传入参数 获得执行的方法
        Object ect = pjp.proceed();
        System.out.println("afterAround-after运行"+ect+"111111111");
        return ect;
    }


        public void before2(){
        System.out.println("before..2");
    }
    public void before3(){
        System.out.println("before..3");
    }
}
